package com.xyx.jdbc2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.Map;

public class Dbconnect {

	/**
	 * 创建数据库连接
	 * @return Connection 连接对象
	 */
	public Connection getConn() {
		Connection conn=null;
		//加载驱动,反射
		try {
			Class.forName("oracle.jdbc.OracleDriver");
			conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "hr", "hr");
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
		
	}
	/**
	 * @param str
	 * @return 返回一个ResultSet的结果集对象
	 */
	public ResultSet query(String str) {
		ResultSet rs=null;
		try {
			//通过连接到数据库的对象conn，创建一个Statment数据库操作对象
			Statement st =this.getConn().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
			//插入sql语句str查询数据库
			rs=st.executeQuery(str);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return rs;
	}
	
	/**
	 * 执行查询操作
	 * 
	 * @param <T>
	 * 
	 * @param strSql
	 *            查询的sql语句
	 * @param clazz
	 *            实体类的Class对象
	 * @return 查询结果集list
	 */
	public <T> List<T> queryList(String str,Class<T> clazz) {
		List<T> list=null;
		try {
			//通过连接到数据库的对象conn，创建一个Statment数据库操作对象
			Statement st =this.getConn().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
			//插入sql语句str查询数据库
			ResultSet rs=st.executeQuery(str);
			//将查找数据库对象传入对象，将数据传入集合，并传回来，以此达到修改数据的 目的
			list=SimplePlant.changeType(rs,clazz);
			//执行完查找语句之后要关闭资源，节约资源
			rs.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}

}
